package staticdemo;

public class StaticFunctionDemo { //  .class -> jvm虚拟机.class加载到内存
	int i;
	static int j;
	
	public void test2() {
		// 非静态方法中可以调用所有本类的非静态和静态属性或方法
		this.i = 10;
	}
	
	public static void test() {
		//不能使用 this 在一个 static 方法, static中不能使用this（老死不相往来）
		// this.i = 1;
		System.out.println("test");
	}

	public static void main(String[] args) {
		//1.静态方法可以直接调用本类的静态方法和属性，因为在main方法没执行前，静态的属性和方法已经占据了内存地址
		test();
		j = 2;
		// 非静态的方法和属性，在静态方法中必须由对象来调用
		StaticFunctionDemo sfd = new StaticFunctionDemo();
		sfd.i = 1;
		sfd.test2();
	}
}

/**
 *   静态是谁的， 怎么访问， 是否可以调用非静态， 加载时间
 *   1.静态的东西属于类的，每个对象共享独一份
 *   2.静态的东西 使用  类名.访问
 *   3.静态的方法可以直接调用本类的静态，非静态的属性和方法只能通过对象.来调用
 *   4.静态的属性和方法都是最先被加载到内存的，加载后才执行main方法，执行了main方法才new出对象
 *  
 *   属于类的，独此一份的是static静态
 *   属于对象的，每人一份的是非静态
 */
